ที่ อินเทอร์เฟซการประมวลผลแบบหลากหลายสำหรับความยืดหยุ่น (HIP) ให้บริการอินเตอร์เฟซรันไทม์ภาษา C++ ที่ทำหน้าที่ซ่อนระดับฮาร์ดแวร์ เพื่อให้โค้ดเดียวกันทำงานได้ทั้งกราฟิกการ์ดของ NVIDIA และ AMD โดยเส้นทางนี้ช่วยลดปัญหาการผูกพันกับผู้ผลิตโดยการจำลองสภาพแวดล้อมของ CUDA ขณะที่เป้าหมายปลายทางคือ ROCm เบื้องหลัง
1. การตั้งค่าสภาพแวดล้อม
การเริ่มต้นเริ่มจากการตั้งค่าตัวแปรสภาพแวดล้อมเพื่อชี้ไปยัง hipcc เครื่องมือคอมไพเลอร์ให้ถูกต้อง:
$ export PATH=$PATH:[MYHIP]/bin
2. การมาตรฐานเครื่องมือประกอบ
ที่ hipcc เครื่องมือคอมไพเลอร์จะทำงานเหมือนห่อหุ้มอัจฉริยะ สำหรับการสร้างอัตโนมัติ ตรรกะ HIP_PATH ?= $(shell hipconfig --path) ตรรกะนี้ช่วยให้ไฟล์ Makefile ค้นหาตำแหน่งติดตั้ง HIP ได้อัตโนมัติ ไม่ว่าระบบจะตั้งค่าอย่างไรก็ตาม
3. ตรรกะการกำหนดเวอร์ชัน
HIP ใช้สูตรการกำหนดเวอร์ชันที่แน่นอนเพื่อจัดการความสามารถของฟีเจอร์อย่างอัตโนมัติในแต่ละรุ่น:
$$\text{HIP\_VERSION} = \text{HIP\_VERSION\_MAJOR} \times 10^7 + \text{HIP\_VERSION\_MINOR} \times 10^5 + \text{HIP\_VERSION\_PATCH}$$
4. ตัวแทนรันไทม์หลัก
HIP ให้บริการ hipMalloc และ hipLaunchKernel เป็นตัวแทนเชิงการทำงานที่เหมือนกับการเรียกใช้งานหน่วยความจำและการดำเนินการของ CUDA ทำให้สามารถใช้แนวคิดการพัฒนาแบบ "แหล่งเดียว" ได้